A hex (short for hexadecimal), binary, or byte editor is software that allows for editing data as binary data. It is particular useful for editing non-human-readable data of a computer file, but can be used for any data. Generally, a hex editor is a standalone computer program, and its user experience is similar to that of a text editor. A user can see and edit the raw and exact contents of a file, as opposed to the interpretation of the content that other, higher level application software may associate with the file format. For example, this could be the data bytes the represent an image instead of a graphical representation.
Generally, data is grouped in 4 groups of 4 or 2 groups of 8 bytes, followed by one group of 16 printable ASCII characters which correspond to each pair of hex values (each byte). Non-printable ASCII characters are typically represented by a dot (".") in the ASCII field.
A hex editor is sometimes used to fix data corruption problems. It can be useful to bypass application edit checks which may prevent correction of erroneous data. It have been used to "patch" executable programs to change or add a few instructions as an alternative to recompilation. Program fixes for IBM mainframe systems are sometimes distributed as patches rather than distributing a complete copy of the affected program.
Typically, a template is represented as a list of labeled text boxes, such that individual values of a file can be easily edited in the appropriate format (e.g., as string, color, or decimal number). Without template support, it is necessary to find the right offset in a file where the value that is to be changed is stored. Also, raw hex editing may require conversion from hexadecimal to decimal, catering for endianness, or other data type conversion peculiarities.
Templates can be stored as files, thereby exchanged by users, and are often shared publicly over the manufacturer's website. Most if not all hex editors define their own template file format; there is no trend to support a standard or even compatibility between the various formats out in the wild.
Scripting languages vary widely, often being product specific languages resembling MS-DOS batch files, to systems that support fully-fledged scripting languages such as Lua or Python.
|
|